<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 丢失 undefined 和函数</title>
</head>
<body>

</body>
<script>
    // undefined：在 JSON 序列化过程中，属性值为 undefined 的属性会被忽略，不会出现在序列化后的字符串中。

    // 函数：对象中的函数属性也会被忽略，不会被序列化和反序列化。

    // NAN会被转换为null

    // 例子：
    // 定义一个包含 undefined 和函数的对象
    const originalObject = {
        name: "Alice",
        age: 30,
        address: undefined,  // 属性值为 undefined
        sayHello: function() {  // 对象中的方法
            console.log(`Hello, my name is ${this.name}.`);
        }
    };
    console.log("Original Object:", originalObject);
    originalObject.sayHello();  // 输出: Hello, my name is Alice.

    // 使用 JSON 序列化和反序列化进行深拷贝
    const jsonString = JSON.stringify(originalObject);
    const copiedObject = JSON.parse(jsonString);

    // 尝试调用 sayHello 方法
    try {
        copiedObject.sayHello();
    } catch (error) {
        console.log(error.message);  // 输出: copiedObject.sayHello is not a function
    }

    // 检查 address 属性
    console.log("Address:", copiedObject.address);  // 输出: undefined (属性被忽略)
</script>
</html>